package API.JDK8时间.日历类;

import java.util.Calendar;
import java.util.Date;

public class CalendarDemo {
    public static void main(String[] args) {
//        Caledndar代表了系统当前时间的日历对象，可以单独修改，获取其中的年月日
//        Calendar是一个抽象类，不能直接创建对象
//       通过静态方法：
//        public static Calendar getInstance() 获取当前时间的日历对象
        /*
        * public final Date getTime()  获取日期对象
        *
        * public final setTime(Date date)  给日历设置日期对象
        * public long getTimeMillis()  拿到时间毫秒值
        *
        * public void setTimeInMillis(long millis)  给日历设置时间毫秒值
        * public int get( int filed)  拿到时间毫秒值   取日历中某个字段的信息
        *
        * public void set(int filed，int value) 修改日历的某个字段的信息
        * public void add(int filed <--表示月份,int amount) 为某个字段增加/减少指定的值
        */
//        1.获取日期对象
//         1)会根据系统的不同地区来获取不同的日历对象，默认表示当前的时间值
//           会把时间中的纪元，年，月，日，时，分，秒，星期。。。都放在一个数中
//         2)月份：0~11  即 0代表着一月，11代表着12月
//           星期:星期日是一周中的第一天  即 1（星期日），2（星期一），3（星期二）

        Calendar c = Calendar.getInstance();

//        2.修改日历代表的时间
        Date d1=new Date(1000L);
        c.setTime(d1);
        System.out.println();
//        3.给日历设置时间毫秒值 同上
        Date d2=new Date();
        c.setTimeInMillis(1100);


  /* public int get( int filed)  拿到时间毫秒值   取日历中某个字段的信息
   * public void set(int filed，int value) 修改日历的某个字段的信息
   * public void add(int filed <--表示月份,int amount) 为某个字段增加/减少指定的值
   */
//        java在calendar中，把索引对应的数字都定义为常量。在第385行
        int year = c.get(1);
        int month = c.get(2)+1;
        int date = c.get(5);
        /*索引
        * 0:纪元
        * 1:年
        * 2:月
        * 3:一年中的第几周
        * 4:一月中的第几周
        * 5:一月中的第几天
        * 6:一周中的第几天
        * 7:一周中的第几小时
        * 8:一天中的第几小时
        * .....16（共17个信息，16个索引）
        * */
//      或者可以这样写

        int year1 = c.get(Calendar.YEAR);
        int month2 = c.get(Calendar.MONTH)+1;
        int date3 = c.get(Calendar.DATE);
        int week=c.get(Calendar.WEEK_OF_MONTH);
        System.out.println(getWeek(week));

//        修改年份
        c.set(Calendar.YEAR,2000);//2000年
        c.set(Calendar.MONTH,11);
        //注意月份是0~11.(如果超过11，不会报错，或顺着向后排)

//      为某个字段增加/减少指定的值
        c.add(Calendar.MONTH,1);//向后加一个月
        c.add(Calendar.MONTH,-1);//向后减一个月
    }

//    创建方法，返回对应的值
    public static String getWeek(int index){
        String[] arr={" ","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
//        根据索引返回对应的星期，俗称查表法
        return arr[index];
    }
}
